home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48_1
/
mercator
< prev
next >
Wrap
Internet Message Format
|
1995-03-31
|
41KB
From: James Gentles <jdg@hpqtdla.sqf.hp.com>
Subject: v04i003: mercator_jg - Transverse Mercator Projections v1.0, Part01/01
Newsgroups: comp.sources.hp48
Followup-To: comp.sys.hp48
Approved: spell@seq.uncwil.edu
Checksum: 3542956383 (verify with brik -cv)
Submitted-by: James Gentles <jdg@hpqtdla.sqf.hp.com>
Posting-number: Volume 4, Issue 3
Archive-name: mercator_jg/part01
BEGIN_RDM mercator.rdm
Posted below are HP48 programs for performing Transverse Mercator Projections.
They are accompanied by documentation, so should be self-explanitory.
Mercator: Transverse Mercator Projections, for cartographers and others,
including radio amateurs!
Comments & Queries to me at the above address.
Regards
James
---------------------------------------------------------------------
I have no professional connection with Hewlett-Packard's
calculator operations other than as a user of their products.
---------------------------------------------------------------------
Opinions expressed are my own, and are not intended to be an official
statement by Hewlett-Packard Company
---------------------------------------------------------------------
To strive, to seek, to find, and not to yield. Tennyson, "Ulysses".
---------------------------------------------------------------------
James Gentles Hewlett Packard, Amateur: GM4WZP
Queensferry Telecoms Division QTD, Email: jdg@hpsqf.sqf.hp.com
Station Road, South Queensferry, HPDESK: James Gentles / HP1400
West Lothian, Scotland, EH30 9XR. Phone: + 44 31 331 7663 DDI
---------------------------------------------------------------------
END_RDM
BEGIN_DOC mercator.doc
ROUTINES and PROCEDURES for PERFORMING
TRANSVERSE MERCATOR PROJECTIONS.
James Gentles
jdg@hpsqf.sqf.hp.com
February 1992
1. Introduction
2. Basics
3. Pseudo Code for Main Routines
4. HP48 Routines: Descriptions
5. HP48 Routines: Programs (ASCII DIR object)
1. Introduction
This file contains a collection of HP48 programs used for translation
between Latitude/Longitude and Transverse Mercator Projection. The programs
were written specifically to translate between the Great Britain and Ireland
"National Grid" systems, however they could be used for translation between
latitude/longitude and ANY mapping system that uses this projection by
altering the constants used to define the projection conveniently contained
in a list.
These programs were written for Amateur Radio use in the UK. Some amateurs
use positioning reference systems based on Latitude and Longitude, where
others use a system based on the UK National Grid which is a Transverse
Mercator Projection. This file only contains the projection translation part
of this work and as such may be useful to a wider audience.
2. Basics
"Mercator Projection" is one of the projections commonly used to show the
whole world in atlases. It's main disadvantage for 'whole world' maps is the
distortion near the poles, making Antartica and Greenland appear much larger
than they actually are. For small parts of the globe (e.g. the UK) this
projection provides a very accurate model.
This system allows a map to contain a regular grid for reference and short
distance calculations. However, because the map is a projection of the surface
of a shape approximating to an oblate spheroid onto a plane (or cylindrical
shaped) piece of paper then these grid lines have a very complex relationship
to latitude and longitude. In "Mercator" projection the map of the world is
projected onto a cylinder of paper from the globe, where the only point of
contact between the two is the equator. Transverse Mercator uses the same
principle, except a line of latitude is used. Absolute accuracy is only
achieved where the globe touches the map, however by choosing scalings and
sphere models correctly these errors can be minimised.
Although the National Grid Systems are peculiar to the British Isles, the
"Transverse Mercator Projection" system is used elsewhere. The constants
required for the translation are all included in a list, in this case called
AIRY or IRISH, substitute the constants for your local projection if desired.
It should be possible to use the formulae for "Mercator Projection" by simply
swapping the Latitude and Longitude entries and providing the appropriate
list of constants.
The programs are written specially for the British and Irish Grids, and their
Grid Numbering scheme. This may not be the same as other systems, again
however the programs are structured for the easy removal or modification of
the numbering scheme. The basic translation provides an output of X and Y
coordinates called eastings and northings. The complication in the UK systems
is that 100Km squares are given grid letters, rather than numbers. In addition
the accuracy is truncated to 100m.
The origin of the UK grid is off the SW corner of England, and there are 4
main squares, each with 500Km sides. The square nearest the origin is called
S (South?), and covers most of England. The square north of that is N (North?)
and covers mostly Scotland. The square north of that again is H (Highland?)
and covers the most northerly islands of Scotland. Finally the eastern
extremity of England just pokes into square T to the east of square S. These
letters appear to be named arbitrarily. A pictorial representation follows:
1500Km --------------
| |
| H . |
| / | (Northern Isles)
| . |
1000Km ---------/----
| ./---- |
| | / N /. | (Scotland)
| / /| ./_ |
| //| | |
500Km ------|----\--------------
| ._| \| |
| |_ S |_ T | (England)
| __- | | |
| _-__________/ |
0 --------------------------
0 500Km 1000Km
Each of these 500Km squares is divided into 25 100Km squares as follows:
A B C D E
F G H J K
L M N O P
Q R S T U
V W X Y Z
Note that this is A to Z from top left to bottom right with letter "I"
omitted. So for example I live at "NT119779" to the nearest 100metres.
The full reference from datum for this is Eastings 311900, Northings
677900. The program XX6-> is used to do the translation from "NT119779"
to the eastings and northings in metres.
The Irish grid only covers one of the above described 500Km squares, so
it is identical to the British system except the leading N, S, H or T is
not required.
This file contains programs written for a HP48SX calculator, but they were
originally developed on a HP28S. In translating my code from the HP28 I
have taken the opportunity of reducing their size slightly, reducing their
execution time by 40%, and taking advantage of some of the HP48's features,
including TAGing. I have also corrected an error in the original HP28 code
that limited the accuracy to approximately 10m. The routines are now accurate
to better than 0.01 seconds of a degree, the oblate spheroid model is now
the limiting factor.
For those more interested in the mathematics of the projection, I have
included psudo-code descriptions of the routines to aid understanding. The
routines are all based on Reference Transverse Mercator Projection Constants,
Formulae and Methods, Ordnance Survey Information March 1983
3. Pseudo Code for Main Routines
This pseudo-code is based on the following calculator routines and on the
Ordnance and Survey Document, Transverse Mercator Projection, March 1983.
The routines use mostly two letter variable names, this does not aid
readability however these are the calculator variables. Leaving the
variables like this means that no errors have been introduced in the
translation to pseudo-code from HP48 code.
Latitude/Longitude to National Grid Reference
Note: All calculations performed in radians
k = Latitude of point
l = Longitude of point
Constants for AIRY Spheriod for Great Britain National Grid
a = 6377563.396 Major semi-axis m
b = 6356256.91 Minor semi-axis m
k0 = .855211333477 True Origin 49 deg N for
l0 = -3.490658E-2 2 deg W GREAT BRITAIN
n0 = -100000 False Origin in m E of true origin
e0 = 400000 m N of true origin
f0 = .9996012717 Scale factor on Central meridian Fo
Constants for AIRY Spheriod for Irish National Grid
a = 6377563.396 Major semi-axis m
b = 6356256.91 Minor semi-axis m
k0 = .933751149817 True Origin 53.5 deg N for
l0 = -.139626340159 8 deg W IRELAND
n0 = 250000 False Origin in m E of true origin
e0 = 200000 m N of true origin
f0 = 1.000035 Scale factor on Central meridian Fo
p = l - l0
k3 = k - k0 difference in latitude
k4 = k + k0 sum of latitudes
call subroutine ABNE, uses a b f0 and returns a1 b1 n1 e2
call subroutine AOM, uses n1 k3 k4 b1 and returns m
call subroutine VRH2, uses a1 e2 k and returns v r h2
J3 = 'm+n0' Formula 1
J4 = 'v/2*SIN(k)*COS(k)' Formula 2
J5 = 'v/24*SIN(k)*COS(k)^3*(5-TAN(k)^2+9*h2)' Formula 3
J6 = 'v/720*SIN(k)*COS(k)^5*(61-58*TAN(k)^2+TAN(k)^4)' Formula 3a
northings = 'J3+p^2*J4+p^4*J5+p^6*J6' COMPUTE NORTHINGS
(answer in metres from origin)
J7 = COS(k) * v Formula 4
J8 = 'v/6* COS(k)^3*(v/r-TAN(k)^2)' Formula 5
J9 = 'v/120*COS(k)^5*(5-18*TAN(k)^2+TAN(k)^4+14*h2-58*TAN(k)^2*h2)' Formula 6
eastings = 'e0+p*J7+p^3*J8+p^5*J9' COMPUTE EASTINGS
(answer in metres from origin)
Grid reference can now be easily obtained from eastings and northings.
National Grid Reference to Latitude/Longitude
Note: All calculations performed in radians
Initially decode grid reference into metres from origin, to obtain
e = eastings of point (in metres from origin)
n = northings of point (in metres from origin)
Constants for AIRY Spheriod for Great Britain National Grid
a = 6377563.396 Major semi-axis m
b = 6356256.91 Minor semi-axis m
k0 = .855211333477 True Origin 49 deg N for
l0 = -3.490658E-2 2 deg W GREAT BRITAIN
n0 = -100000 False Origin in m E of true origin
e0 = 400000 m N of true origin
f0 = .9996012717 Scale factor on Central meridian Fo
Constants for AIRY Spheriod for Irish National Grid
a = 6377563.396 Major semi-axis m
b = 6356256.91 Minor semi-axis m
k0 = .933751149817 True Origin 53.5 deg N for
l0 = -.139626340159 8 deg W IRELAND
n0 = 250000 False Origin in m E of true origin
e0 = 200000 m N of true origin
f0 = 1.000035 Scale factor on Central meridian Fo
y1 = e - e0
call subroutine ABNE, uses a b f0 and returns a1 b1 n1 e2
call subroutine PHI, uses n n0 n1 k0 a1 b1 and returns k k3 k4
call subroutine VRH2, uses a1 e2 k and returns v r h2
J3 = TAN(k)/(2*r*v) Formula 7
J4 = 'TAN(k)/(24*r*v^3)*(5+3*TAN(k)^2+h2-9*TAN(k)^2*h2)' Formula 8
J5 = 'TAN(k)/(720*r*v^5)*(61+90*TAN(k)^2+45*TAN(k)^4)' Formula 9
Latitude = 'k-y1^2*J3+y1^4*J4-y1^6*J5' COMPUTE LATITUDE
J6 = 1/(COS(k)*v) Formula10
J7 = '1/(COS(k)*6*v^3)*(v/r+2*TAN(k)^2)' Formula11
J8 = '1/(COS(k)*120*v^5)*(5+28*TAN(k)^2+24*TAN(k)^4)' Formula12
J9 = '1/(COS(k)*5040*v^7)*(61+662*TAN(k)^2+1320*TAN(k)^4+720*TAN(k)^6)' 12a
Longitude = 'l0+y1*J6-y1^3*J7+y1^5*J8-y1^7*J9' COMPUTE LONGITUDE
Finally translate Latitude and longitude back into degrees, minutes and seconds
SUBROUTINES used in National Grid Ref / Latitude & Longitude TRANSFORMS
VRH2 (uses a1 e2 k and returns v r h2)
v = 'a1/SQRT(1-e2*SIN(k)^2)'
r = 'v*(1- e2)/(1-e2*SIN(k)^2)'
h2 = '(v/r)-1'
AOM (uses n1 k3 k4 b1 and returns m), Compute Developed Arc of Meridian
J3 = '(1+n1+5/4*n1^2+ 5/4*n1^3)*k3'
J4 = '(3*n1+3*n1^2+21/8*n1^3)*SIN(k3)*COS(k4)'
J5 = '(15/8*n1^2+15/ 8*n1^3)*SIN(2*k3)*COS(2*k4)'
J6 = '35/ 24*n1^3*SIN(3*k3)*COS(3*k4)'
m = 'b1*(J3 - J4 + J5 - J6)'
PHI (uses n n0 n1 k0 a1 b1 and returns k k3 k4) Iteratively Calc Latitude k
k = '(n-n0)/a1+k0' First approximation to Latitude
REPEAT
k3 = 'k-k0'
k4 = 'k+k0'
call subroutine AOM, uses n1 k3 k4 b1 and returns m
Test= 'n-n0-m'
k = 'k+(n-n0-m)/a1'
UNTIL ABS(Test)<0.001
k = Test
ABNE (uses a b f0 and returns a1 b1 n1 e2)
a1 = 'a*f0'
b1 = 'b*f0' Scale Major & Minor axes by f0
n1 = '(a1-b1)/(a1+b1)' calculate n from scaled axes
e2 = '(a1^2-b1^2)/a1^2' calculate e^2 (e2) from scaled axes
4. HP48 Routines: Descriptions
Transverse Mercator Projection Routines, to change to Latitude and Longitude,
all latitude and longitude numbers are entered, and returned in DD.MMSSsss
format.
->NGR Lat and Long to National Grid Reference (Great Britain). Put
Latitude on stack (north is +ve), then Longitude on stack
(east is +ve), returns a string of format "NT119779". The bottom
left corner of the 100m square defined.
NGR-> National Grid to Lat and Long. The inverse of ->NGR. Returns the
Lat and Long of the centre of the 100m square defined.
->IGR Lat and Long to Irish Grid Reference. Put Latitude on stack
(north is +ve), then Longitude on stack (east is +ve), returns
a string of format "T119779". The bottom left corner of the 100m
square defined.
IGR-> Irish Grid to Lat and Long. The inverse of ->IGR. Returns the
Lat and Long of the centre of the 100m square defined.
->XX6 Used by ->NGR and ->IGR to translate eastings and northings in metres
to a national grid reference, e.g. 311900 677900 become "NT119799".
Truncates accuracy to 100m, so result refers to the bottom left corner
of the grid reference 100metre square produced. If the coordinates do
not fall into one of the 4 500Km squares a "#" is returned in the
first character of the string.
XX6-> Performs the inverse process of ->XX6. Returns the full eastings and
northings of the square centre refered to in metres, i.e. +50m is
added to the eastings and northings.
->TMP Performs the Transverse Mercator Projection. On entry the stack should
contain Lat, Long (both in radians), then all the constants in list
AIRY or IRISH depending on what projection is being used. The routine
returns eastings and northings on the stack in metres.
TMP-> Performs the inverse Transverse Mercator Projection. On entry the
stack should contain eastings, northings, then all the constants in
list AIRY or IRISH depending on what projection is being used. The
routine returns latitude and longitude on the stack in radians.
VRH2 Used by ->TMP and TMP-> routines. Calculates v r & h2.
AOM Used by ->TMP and PHI routines. Calculates Arc of Meridian, m.
PHI Used by TMP-> routine. Iteratively calculates k k3 & k4.
ABNE Used by ->TMP and TMP-> routines. Calculates a1 b1 n1 & e2.
PAD0 Used by ->XX6 routine
AIRY List of constants used by TMP routines for Great Britain. See following
listing of object for comments on what individual elements are.
IRISH List of constants used by TMP routines for Ireland. See following
listing of object for comments on what individual elements are.
External programs used (included in the listing for completeness):
PRESERVE Returns flags to initial state on program exit. Used in ->TMP TMP->
and ->XX6 routines. See HP48SX Manual II page 555.
5. HP48 Routines: Programs (ASCII DIR Object) 4256bytes #25FEhex
END_DOC
BEGIN_RPL mercator.rpl
%%HP: T(3)A(D)F(.);
DIR
\->NGR
\<< HMS\-> D\->R SWAP HMS\-> D\->R @ Change to degs decimal then rads
AIRY OBJ\-> DROP @ Put projection consts on stack
\->TMP @ Do projection, returns E&N on stack
\->XX6 @ translate to grid letters + 6 nums
"NGR" \->TAG @ tag output
\>>
@
NGR\->
\<< XX6\-> @ translate grid to full coordinates
AIRY OBJ\-> DROP @ put projection consts on stack
TMP\-> @ do projection, returns Lat and Long
SWAP R\->D \->HMS "Lat\^o" \->TAG @ translate to degrees decimal
SWAP R\->D \->HMS "Long\^o" \->TAG @ and tag output
\>>
@
\->TMP @ Reference Transverse Mercator Proj'n
\<< @ Constants, Formulae and Methods.
\<< RAD \-> l k a b k0 l0 n0 e0 f0 @ Ordnance Survey Information March 83
\<< l l0 - k k0 - k k0 + \-> p k3 k4
\<< a b f0 ABNE \-> a1 b1 n1 e2
\<< n1 k3 k4 b1 AOM a1 e2 k VRH2
l l0 - k SIN k COS k TAN @ Compute SIN(k) COS(k) & TAN(k) once
\-> m v r h2 p s c t
\<< m n0 + @ Formula I
s c v 2 / * * p SQ * @ Formula II *p^2
'v/24*s*c^3*(5-t^2+9*h2)'
\->NUM p 4 ^ * @ Formula III *p^4
'v/720*s*c^5*(61-58*SQ(t)+t^4)'
\->NUM p 6 ^ * @ Formula IIIA*p^6
+ + + @ compute northings
c v * p * @ Formula IV *p
'v/6*c^3*(v/r-SQ(t))' \->NUM p 3 ^ * @ Formula V *p^3
'v/120*c^5*(5-18*SQ(t)+t^4+14*h2
-58* SQ(t)*h2)' \->NUM p 5 ^ * @ Formula VI *p^5
+ + e0 + @ compute eastings
SWAP
\>>
\>>
\>>
\>>
\>> PRESERVE @ Return to original flag settings
\>> @ See HP48 Manual II page 555
@
TMP\-> @ Reference Transverse Mercator Proj'n
\<< @ Constants, Formulae and Methods.
\<< RAD \-> e n a b k0 l0 n0 e0 f0 @ Ordnance Survey Information March 83
\<< a b f0 ABNE e e0 - \-> a1 b1 n1 e2 y1
\<< n n0 n1 k0 a1 b1 PHI \-> k k3 k4
\<< a1 e2 k VRH2 k COS k TAN @ Calculate COS(k) & TAN(k) for use later
\-> v r h2 c t
\<< k t 2 r v * * / y1 SQ * @ Formula VII *y1^2
't/(24*r*v^3)*(5+3*SQ(t)+h2
-9*SQ(t)*h2)' \->NUM y1 4 ^ * @ Formula VIII *y1^4
't/(720*r*v^5)*(61+90*SQ(t)
+45*t^4)' \->NUM y1 6 ^ * @ Formula IX *y1^6
- - - @ Compute Latitude
c v * INV y1 * @ Formula X *y1
'1/(c*6*v^3)*(v/r+2*SQ(t))'
\->NUM y1 3 ^ * @ Formula XI *y1^3
'1/(c *120*v^5)*(5+28*SQ(t)+24
*t^4)' \->NUM y1 5 ^ * @ Formula XII *y1^5
'1/(c*5040*v^7)*(61+662*SQ(t)+1320
*t^4+720*t^6)' \->NUM y1 7 ^ * @ Formula XIIA *y1^7
- - - l0 + @ Compute Longitude
\>>
\>>
\>>
\>>
\>> PRESERVE @ Return to original flag settings
\>> @ See HP48 Manual II page 555
@
\->IGR
\<< HMS\-> D\->R SWAP HMS\-> D\->R @ Same as \->NGR but since Irish grid
IRISH OBJ\-> DROP @ is only one 500Km square then the
\->TMP \->XX6 @ initial grid letter "S" is dropped.
2 8 SUB "IGR" \->TAG
\>>
@
IGR\->
\<< DTAG "S" SWAP + @ Same as NGR\-> but since Irish grid
XX6\-> IRISH OBJ\-> DROP @ is only one 500Km square then an
TMP\-> @ extra "S" is added so the standard
SWAP R\->D \->HMS "Lat\^o" \->TAG @ routines can be used.
SWAP R\->D \->HMS "Long\^o" \->TAG
\>>
@
\->XX6
\<<
\<< STD 100 / IP SWAP 100 / IP @ throw away accuracy better than 100m
DUP2 5000 / IP SWAP 5000 / IP @ break eastings and northings into
\-> n e es ns @ 100 metre units and 500Km units
\<<
IF es 0 ==
THEN @ for eastings 0 to 500000
CASE ns 2 == @ for northings 1000K to 1500K square H
THEN "H"
END
ns 1 == @ for northings 500K to 1000K square N
THEN "N"
END
ns 0 == @ for northings 0 to 500K square S
THEN "S"
END
"#" @ else illegal square denoted by a #
END
ELSE
ns 0 == es 1 == AND @ for eastings 500K to 1000K AND
"T" @ northings 0 to 500K square T
"#" @ else illegal square denoted by a #
IFTE
END
e 1000 / IP 5 MOD 1 + @ Compute a number for each 100Km square
4 n 1000 / IP 5 MOD - @ within the 500Km square in the range
5 * + DUP @ 1 to 25 top left to bottom right
IF 8 \<= @ skip the number 8, gives 0-7,9-25
THEN 1 -
END 65 + CHR + @ translate to A to Z with I missing
e PAD0 n PAD0 @ use PAD0 to pad e & n with leading 0's
+ +
\>>
\>> PRESERVE @ Return to original flag settings
\>> @ See HP48 Manual II page 555
@
XX6\->
\<< DUP 3 5 SUB @ Split incoming string into 4 parts
SWAP DUP 6 8 SUB @ and put them on stack
SWAP DUP NUM @ e.g. "NJ123456"
SWAP 2 2 SUB NUM 66 - @ "123" "456" NUM(N) NUM(J)-66
DUP @ e n f s
IF 7 < @ NUM(J)-66 are translated to be
THEN 1 + @ contiguous top left to bottom right
END
CASE OVER 72 == @ H square msdigits
THEN 0 2
END
OVER 78 == @ N square msdigits
THEN 0 1
END
OVER 83 == @ S square msdigits
THEN 0 0
END
OVER 84 == @ T square msdigits
THEN 1 0
END
"XX Error" DOERR @ else display error
END
3 PICK 5 MOD 4 5 PICK 5 / IP 5 MOD -
\-> e n f s e1 n1 e2 n2
\<< e OBJ\-> e1 5000 *
e2 1000 * + + 100 * 50 +
n OBJ\-> n1 5000 * @ recombine elements into full N&E
n2 1000 * + + 100 * 50 + @ adding 50 metres to return square ctr
\>>
\>>
@
VRH2 @ Compute v r and h2
\<< \-> a1 e2 k
\<< 'a1/\v/(1-e2* SIN(k)^2)' \->NUM
DUP
'(1-e2)/(1-e2*SIN(k)^2)' \->NUM *
DUP2 / 1 -
\>>
\>>
@
AOM @ Compute Developed Meridian Arc m
\<< 4 PICK DUP SQ SWAP 3 ^ @ Compute n1^2 and n1^3 only once
\-> n1 k3 k4 b1 n2 n3
\<< '(1+n1+5/4*n2+5/4*n3)*k3' \->NUM
'(3*n1+3*n2+21/8*n3)*SIN(k3)*COS(k4)' \->NUM
'(15/8*n2+15/8*n3)*SIN(2*k3)*COS(2*k4)' \->NUM
'35/24*n3*SIN(3*k3)*COS(3*k4)' \->NUM
- - - b1 * @ on exit m is on stack
\>>
\>>
@
PHI @ iteratively calculate Latitude k
\<< \-> n n0 n1 k0 a1 b1 @ stack to local variables
\<< '(n-n0)/a1+k0' \->NUM @ first approximation to Latitude
0 0
DO
DROP2 DUP DUP k0 - SWAP k0 +
\-> k k3 k4
\<< n1 k3 k4 b1 AOM \-> m @ re-compute arc of meridian
\<< n n0 - m - DUP
IF .001 <
THEN k
ELSE n n0 - m - a1 / k +
END
k3 k4
\>>
\>> 4 ROLL
UNTIL .001 < @ until error is less than 0.001
END
\>> @ returns k k3 k4 on stack
\>>
@
ABNE
\<< DUP ROT * 3 ROLLD * \-> b1 a1 @ scale a & b by f0 and call a1 and b1
\<< a1 b1 DUP2 - a1 b1 + / @ calculate n from scaled axes
a1 SQ b1 SQ - a1 SQ / @ calculate e^2 (e2) from scaled axes
\>>
\>>
@
PAD0
\<< 1000 MOD \->STR @ take string from stack and
WHILE @ while it is shorter than 3 characters
DUP SIZE 3 <
REPEAT "0" SWAP + @ add a leading "0"
END
\>>
@
@ Constants defining Transverse Mercator
AIRY { @ Projection for Airy Spheroid
6377563.396 @ Major semi-axis m
6356256.91 @ Minor semi-axis m
.855211333477 @ True Origin 49 deg N for
-3.490658E-2 @ 2 deg W GREAT BRITAIN
-100000 @ False Origin in m E of true origin
400000 @ m N of true origin
.9996012717 } @ Scale factor on Central meridian Fo
@
@ Constants defining Transverse Mercator
IRISH { @ Projection for Airy Spheroid
6377563.396 @ Major semi-axis m
6356256.91 @ Minor semi-axis m
.933751149817 @ True Origin 53.5 deg N for
-.139626340159 @ 8 deg W IRELAND
250000 @ False Origin in m E of true origin
200000 @ m N of true origin
1.000035 } @ Scale factor on Central meridian Fo
@
PRESERVE @ See HP48SX Manual II page 555.
\<< RCLF \-> f @ May be more suitably located in HOME
\<< EVAL f STOF
\>>
\>>
END
END_RPL
BEGIN_ASC mercator.asc
%%HP: T(3)A(D)F(.);
"69A20FF7890200000080052554355425655480D9D20E1632916C11C432D6E201
066E1632EB3A1D6E201066F76C1EF53293632B2130850005094259435845047A
2033920600006933657736033920600000196526536033920999718941157339
0339209999510436269319339205000000000000520339205000000000000020
339200000000053000010B2130BA00040149425954047A203392060000693365
7736033920600000196526536033920999774333112558033920899000008560
9439339205000000000000019339205000000000000040339209990071721069
990B21309A000400514440340D9D20E1632339203000000000000010D4EB1B0B
C13303278BF18B9C13F2A2EBBE1D5032D9D20C2A207000003DBBF176BA1B2130
4963293632B213028000401424E45440D9D20E163278BF1E0CF1EEDA13F2A20D
CF1EEDA11C432D6E20202613D6E20201613E1632D6E20201613D6E202026132A
BF190DA1D6E20201613D6E2020261376BA150FA1D6E20201613624B1D6E20202
613624B190DA1D6E20201613624B150FA1EF53293632B2130DD0003005849430
D9D20E16321C432D6E2010E6D6E2020E603D6E2020E613D6E2020B603D6E2020
1613D6E20202613E16328BA20D6E2010E6D6E2020E60390DA1D6E2020161350F
A1D6E2020B60376BA1B21304E5A14B2A24B2A23C0323FBF178BF178BF1D6E202
0B60390DA1DBBF1D6E2020B60376BA11C432D6E2010B6D6E2020B633D6E2020B
643E1632D6E2020E613D6E2020B633D6E2020B643D6E2020261384E203014F4D
41C432D6E2010D6E1632D6E2010E6D6E2020E60390DA1D6E2010D690DA178BF1
3CE22339207990000000000010EBBE1AFE22D6E2010B65BF22D9D20D6E2010E6
D6E2020E60390DA1D6E2010D690DA1D6E2020161350FA1D6E2010B676BA1B213
05DF22D6E2020B633D6E2020B643EF532EF532803A25BCF1DE03233920799000
0000000010EBBE19B632EF53293632B2130D62003014F4D430D9D20E1632803A
2A9CF178BF1624B1DBBF13F2A2D20B11C432D6E2020E613D6E2020B633D6E202
0B643D6E20202613D6E2020E623D6E2020E633E16328BA209C2A2D6E2020E613
76BA1D13A2803A250FA1D6E2020E623EEDA176BA1D13A2803A250FA1D6E2020E
633EEDA176BA1D6E2020B633EEDA1B21304E5A18BA203F2A2D6E2020E613EEDA
13F2A2D6E2020E623EEDA176BA1339201000000000000120C53A250FA1D6E202
0E633EEDA176BA1D6E2020B633CA4B1EEDA1D6E2020B643505B1EEDA1B21304E
5A18BA20339201000000000000510C53A250FA1D6E2020E623EEDA1339201000
000000000510C53A250FA1D6E2020E633EEDA176BA1ED2A2D6E2020B633EEDA1
CA4B1EEDA1ED2A2D6E2020B643EEDA1505B1EEDA1B21304E5A18BA2033920100
000000000053033920100000000000042050FA1D6E2020E633EEDA13F2A2D6E2
020B633EEDA1CA4B1EEDA13F2A2D6E2020B643EEDA1505B1EEDA1B21304E5A19
0DA190DA190DA1D6E20202613EEDA1EF53293632B213050300406525842340D9
D20E16321C432D6E20201613D6E20205623D6E2010B6E16328BA20D6E2020161
39C2A2D6E20205623D6E2010B6CA4B1ED2A2D20B1EEDA190DA1473B150FA1B21
304E5A178BF18BA209C2A2D6E2020562390DA19C2A2D6E20205623D6E2010B6C
A4B1ED2A2D20B1EEDA190DA150FA1B21304E5A1EEDA12ABF150FA19C2A290DA1
EF53293632B2130D110040858563D840D9D20E163278BF13F2A2D13A2C58C1DB
BF178BF1233A2C53A2C58C1DBBF178BF164BC1DBBF1ED2A2ED2A2C58C164BC13
3920100000000000066090DA178BF13CE22743A2EBBE1AFE22D9D209C2A276BA
1B21305DF22D8732D9D2092CF1339201000000000000270279E18A732D9D204B
2A2ED2A2B21305DF2292CF1339201000000000000870279E18A732D9D204B2A2
9C2A2B21305DF2292CF1339201000000000000380279E18A732D9D204B2A24B2
A2B21305DF2292CF1339201000000000000480279E18A732D9D209C2A24B2A2B
21305DF22C2A2051000858502542727F627933A1B21305DF223F2A2A9CF1D13A
2D4EB1803A2D13A2A9CF1D13A250FA1D6BB1D13A2D4EB190DA11C432D6E20105
6D6E2010E6D6E201066D6E201037D6E20205613D6E2020E613D6E20205623D6E
2020E623E1632D6E201056B7FC1D6E20205613339203000000000000050EEDA1
D6E20205623339203000000000000010EEDA176BA176BA133920200000000000
0010EEDA133920100000000000005076BA1D6E2010E6B7FC1D6E2020E6133392
03000000000000050EEDA1D6E2020E623339203000000000000010EEDA176BA1
76BA1339202000000000000010EEDA133920100000000000005076BA1EF53293
632B21304B30040D885856340D9D20E1632C9432D9D20E1632684C1339202000
00000000001050FA1D6BB1DBBF133920200000000000001050FA1D6BB12ABF13
3920300000000000005050FA1D6BB1DBBF133920300000000000005050FA1D6B
B11C432D6E2010E6D6E201056D6E20205637D6E2020E637E16323CE22D6E2020
56374B2A2279E1AFE22D9D20D8732D9D20D6E2020E637ED2A2279E18A732C2A2
070000845DF22D6E2020E6379C2A2279E18A732C2A2070000E45DF22D6E2020E
6374B2A2279E18A732C2A2070000355DF22C2A207000032B21305DF22B21305B
F22D9D20D6E2020E6374B2A2279E1D6E202056379C2A2279E1387E1C2A207000
045C2A207000032EF3A1B21305DF22D6E20105633920300000000000001050FA
1D6BB1D13A2D4EB19C2A276BA1803A2D6E2010E633920300000000000001050F
A1D6BB1D13A2D4EB190DA1D13A2EEDA176BA178BF13CE22C53A2CFCE1AFE22D9
D209C2A290DA1B21305DF2233920100000000000056076BA166BC176BA1D6E20
105684E204005144403D6E2010E684E20400514440376BA176BA1EF53293632B
213084E2080052554355425655493632B21308530040947425D840D9D20E1632
33622C2A207000035DBBF176BA184E2040858563D884E20509425943584B7FC1
8DBF184E204045D405D8DBBF14FEB1E1FB1C2A20D0000C416470BEB522DBBF14
FEB1E1FB1C2A20F0000C4F6E6760BEB52293632B21302C00040D894742540D9D
20E1632E3FB18CEB1DBBF1E3FB18CEB184E20509425943584B7FC18DBF184E20
40D845D40584E2040D8858563ED2A2C53A2C58C1C2A20B0000947425EB522936
32B2130690004045D405D840D9D20E1632C9432D9D20E16324B3C11C432D6E20
1056D6E2010E6D6E201016D6E201026D6E2020B603D6E2020C603D6E2020E603
D6E20205603D6E20206603E1632D6E201016D6E201026D6E2020660384E20401
424E454D6E201056D6E2020560390DA11C432D6E20201613D6E20202613D6E20
20E613D6E20205623D6E20209713E1632D6E2010E6D6E2020E603D6E2020E613
D6E2020B603D6E20201613D6E2020261384E20300584941C432D6E2010B6D6E2
020B633D6E2020B643E1632D6E20201613D6E20205623D6E2010B684E2040652
58423D6E2010B6505B1D6E2010B6E55B11C432D6E201067D6E201027D6E20208
623D6E201036D6E201047E1632D6E2010B6D6E201047ED2A2D6E201027D6E201
067EEDA1EEDA150FA1D6E20209713624B1EEDA18BA20D6E20104733920100000
0000000420D6E201027EEDA1D6E2010673F2A2D20B1EEDA150FA1D13A23F2A2D
6E201047624B1EEDA176BA1D6E2020862376BA1173A2D6E201047624B1EEDA1D
6E20208623EEDA190DA1EEDA1B21304E5A1D6E20209713803A2D20B1EEDA18BA
20D6E201047339202000000000000270D6E201027EEDA1D6E201067D13A2D20B
1EEDA150FA1339201000000000000160339201000000000000090D6E20104762
4B1EEDA176BA1339201000000000000540D6E201047803A2D20B1EEDA176BA1E
EDA1B21304E5A1D6E20209713233A2D20B1EEDA190DA190DA190DA1D6E201036
D6E201067EEDA1872B1D6E20209713EEDA18BA209C2A2D6E201036233A2EEDA1
D6E2010673F2A2D20B1EEDA150FA1D6E201067D6E20102750FA1ED2A2D6E2010
47624B1EEDA176BA1EEDA1B21304E5A1D6E202097133F2A2D20B1EEDA18BA209
C2A2D6E201036339202000000000000210EEDA1D6E201067D13A2D20B1EEDA15
0FA1D13A2339201000000000000820D6E201047624B1EEDA176BA13392010000
00000000420D6E201047803A2D20B1EEDA176BA1EEDA1B21304E5A1D6E202097
13D13A2D20B1EEDA18BA209C2A2D6E201036339203000000000004050EEDA1D6
E201067743A2D20B1EEDA150FA13392010000000000001603392020000000000
02660D6E201047624B1EEDA176BA1339203000000000002310D6E201047803A2
D20B1EEDA176BA1339202000000000000270D6E201047233A2D20B1EEDA176BA
1EEDA1B21304E5A1D6E20209713743A2D20B1EEDA190DA190DA190DA1D6E2020
C60376BA1EF532EF532EF532EF53293632B213084E2080052554355425655493
632B2130C370040D845D40540D9D20E1632C9432D9D20E16324B3C11C432D6E2
010C6D6E2010B6D6E201016D6E201026D6E2020B603D6E2020C603D6E2020E60
3D6E20205603D6E20206603E1632D6E2010C6D6E2020C60390DA1D6E2010B6D6
E2020B60390DA1D6E2010B6D6E2020B60376BA11C432D6E201007D6E2020B633
D6E2020B643E1632D6E201016D6E201026D6E2020660384E20401424E4541C43
2D6E20201613D6E20202613D6E2020E613D6E20205623E1632D6E2020E613D6E
2020B633D6E2020B643D6E2020261384E203014F4D4D6E20201613D6E2020562
3D6E2010B684E204065258423D6E2010C6D6E2020C60390DA1D6E2010B6CA4B1
D6E2010B6505B1D6E2010B6E55B11C432D6E2010D6D6E201067D6E201027D6E2
0208623D6E201007D6E201037D6E201036D6E201047E1632D6E2010D6D6E2020
E60376BA1D6E201037D6E201036D6E201067ED2A250FA1EEDA1EEDA1D6E20100
7624B1EEDA18BA20D6E20106733920100000000000042050FA1D6E201037EEDA
1D6E2010363F2A2D20B1EEDA1D13A2D6E201047ED2A2D20B190DA1173A2D6E20
208623EEDA176BA1EEDA1B21304E5A1D6E201007803A2D20B1EEDA18BA20D6E2
0106733920200000000000027050FA1D6E201037EEDA1D6E201036D13A2D20B1
EEDA1339201000000000000160339201000000000000850D6E201047624B1EED
A190DA1D6E201047803A2D20B176BA1EEDA1B21304E5A1D6E201007233A2D20B
1EEDA176BA176BA176BA1D6E201036D6E201067EEDA1D6E201007EEDA18BA20D
6E201067233A250FA1D6E2010363F2A2D20B1EEDA1D6E201067D6E20102750FA
1D6E201047624B190DA1EEDA1B21304E5A1D6E2010073F2A2D20B1EEDA18BA20
D6E20106733920200000000000021050FA1D6E201036D13A2D20B1EEDA1D13A2
339201000000000000810D6E201047624B1EEDA190DA1D6E201047803A2D20B1
76BA1339201000000000000410D6E20208623EEDA176BA133920100000000000
0850D6E201047624B1EEDA1D6E20208623EEDA190DA1EEDA1B21304E5A1D6E20
1007D13A2D20B1EEDA176BA176BA1D6E2020560376BA1DBBF1EF532EF532EF53
2EF53293632B213084E2080052554355425655493632B21304660040E47425D8
40D9D20E163284E2040858563D884E204014942595B7FC18DBF184E204045D40
5D8DBBF14FEB1E1FB1C2A20D0000C416470BEB522DBBF14FEB1E1FB1C2A20F00
00C4F6E6760BEB52293632B21305A00040D8E4742540D9D20E1632E3FB18CEB1
DBBF1E3FB18CEB184E204014942595B7FC18DBF184E2040D845D40584E2040D8
858563C2A20B0000E47425EB52293632B213007E6"
END_ASC
BYTES: #6E70h 4255
BEGIN_UU mercator.uue
begin 644 mercator
M2%!(4#0X+466*O!_F"`````(4%)%4T525D4(G2W@82,9QA%,(VTN$F82.^I
MH]'F`@%F?\;A7R,Y-K(2`U@`4)`DE32%5$"G`C,I8```EC-6=V,PDP(&``"1:
M5F(U!C,ID)D7F!11-Y,PDP*9F15`8V(YD3,I4````````"4PDP(%````````]
M`C,I`````%`#`!"P$@.K`$`0E"2514"G`C,I8```EC-6=V,PDP(&``"15F(UW
M!C,ID)EW-#,14H4PDP*8"0``6`9)DS,I4````````!`YDP(%````````!#,I#
MD)D`%R<!EIFP$@.I`$``%40$0]#9`AXV,I,"`P````````%-OK&P'#,P<K@?N
MN,DQ+RJ^Z]$%(YTMP*("!P``T[L?9ZNQ$@.4-I)C(RLQ(`@`!$%"3D4$G2W@)
M82.'^^'`'^ZM,2\JT/SAWAK!--+F`@)B,6TN(!`6XV$C;2X@$!;3Y@("8C&B9
M^Y'0&FTN(!`6T^8"`F(Q9ZM1\!IM+B`0%F-"&VTN("`68T(;":W1Y@("83$F*
MM%'P&OXUDF,C*S'0#0`#4$A)`YTMX&$CP332Y@(!;FTN(.`&T^8"`FXQ;2X@8
ML`;3Y@("83%M+B`@%N-A([@JT.8"`6YM+B#@!I/0&FTN(!`64_`:;2X@L`9S=
MMAHK,4!>&K2B0BLJPS`ROQ^'^W&X'VTN(+`&D]`:O?O1Y@(":S!GJQ%,(VTN?
M$+#6Y@(":S-M+B"P1N-A(VTN(.`6T^8"`FLS;2X@L$;3Y@("8C%(+C`0]-04U
M3"-M+A#0YF$C;2X0X-;F`@)N,`FMT>8"`6T)K7&X'\,N,I,"EPD```````&^!
MZZ'O(FTN$+!6^R*=+=#F`@%N;2X@X`:3T!IM+A#0EM`:;2X@$!93\!IM+A"PB
M=K8:*S%0_2)M+B"P-M/F`@)K-/XUXE\C"*-2RQ_M,#*3`I<)```````!ONN1+
M:R/^-9)C(RLQT"8``T%/30.=+>!A(PBCHLD?A_MA0AN]^S$O*BVP$4PC;2X@U
MX!;3Y@(":S-M+B"P1M/F`@)B,6TN(.`FT^8"`FXS'C:"JP+)HM+F`@)N,6>K'
MT3$J"*-2\!IM+B#@)N/>&F>KT3$J"*-2\!IM+B#@-N/>&F>KT>8"`FLS[JVQY
M$@/DI8&K`O.BTN8"`FXQ[JTQ+RIM+B#@)N/>&F>K,9,"`0``````$`)<HU+P]
M&FTN(.`VX]X:9ZO1Y@(":S.LM.'>&FTN(+!&4U`;[JVQ$@/DI8&K`C,I$```[
M`````!7`-2H%K]'F`@)N,NZM,9,"`0``````4`%<HU+P&FTN(.`VX]X:9ZOA%
M+2IM+B"P-N/>&JRTX=X:WJ+2Y@(":S3NK5%0&^ZML1(#Y*6!JP(S*1``````X
M```U,),"`0``````0`(%K]'F`@)N,^ZM,2\J;2X@L#;CWAJLM.'>&O.BTN8"'
M`FLT[JU14!ONK;$2`^2ED=`:":V1T!IM+B`@%N/>&OXUDF,C*S%0,``$5E)(R
M,@2=+>!A(\$TTN8"`F$Q;2X@4";3Y@(!:QXV@JL";2X@$!:3+"IM+B!0)M/F8
M`@%KK+3A+2HML.'>&@FM03<;!:^Q$@/DI7&X'[@JD"PJ;2X@4":3T!K)HM+F`
M`@)E,FTN$+#&2AO>HM("&^ZMD=`:!:^Q$@/DI>'>&J+[4?`:R:*2T!K^-9)C'
M(RLQT!$`!%A8-HT$G2W@82.'^S$O*AVCPH4<O?MQN!\RH\(U*ES(T;L?A_MA7
MM!R]^^$M*MZBPH4<1LLQDP(!``````!@!@FM<;@?PRYR-"J^ZZ'O(ITMD"PJG
M9ZNQ$@/5+])X(YTMD,(?,RD0````````<B"7'J@WTMD"M*+B+2HK,5#](BG\6
M,9,"`0``````@`=RZ8%Z(YTM0"LJR:*R$@/5+Y+"'S,I$````````(,@EQZH-
M-]+9`K2B0BLJ*S%0_2(I_#&3`@$``````$`(<NF!>B.=+9`L*K2BLA(#U2_"I
MH@(5`("%!5(D)_<FES,:*S%0_2+SHJ+)'QVCTN0;"*/2,2J:_-$Q*@6OT;8;D
M':/2Y!L)K1%,(VTN$%#6Y@(!;FTN$Y@(!<VTN(%`6T^8"`FXQ;2X@4";3%
MY@(";C(>-M+F`@%E>\_1Y@("93$S*3````````!0X-X:;2X@4"8SDP(#````V
M`````>ZM<;8:9ZLQDP("`````````>ZM,9,"`0````````5GJ]'F`@%N>\_11
MY@(";C$S*3````````!0X-X:;2X@X"8SDP(#`````````>ZM<;8:9ZLQDP(""
M`````````>ZM,9,"`0````````5GJ^%?(SDVLA(#M`-`T(B%94/0V0(>-L))=
M(YTMX&$CAL0QDP("`````````06OT;8;O?LQDP("`````````06OT;8;HOLQ>
MDP(#````````!06OT;8;O?LQDP(#````````!06OT;8;P332Y@(!;FTN$%#6H
MY@("97-M+B#@-N=A(\,NTN8"`F5SM*(BEQ[Z+M+9`HTWTMD";2X@X#;G+2IR:
MZ8%Z(RPJ<```2-4OTN8"`FYSR:(BEQZH-\*B`@<`X%3](FTN(.`V1RLJ<NF!#
M>B,L*G```%/5+\*B`@<`,+(2`]4OLA(#M2_2V0)M+B#@-D<K*G+IT>8"`F5S=
MR:(BEQZ#Y\&B`@<`0,6B`@<`,.(_&BLQ4/TB;2X04#:3`@,````````!!:_1B
MMAL=H]+D&\FB<K8:"*/2Y@(!;C,I,````````!!0\!IMN]$Q*DV^D=`:':/B0
MWAIGJW&X'\,NPC4J_.RA[R*=+9`L*@FML1(#U2\RDP(!``````!0!F>K8;8<8
M9ZO1Y@(!94@N0``51`33Y@(!;D@N0``51`1SMAIGJ^%?(SDVLA(#2"Z``"55&
M-%4D95648R,K,8`U``1)1U*-!)TMX&$C,R;"H@('`##5NQ]GJX'D`@186#:-I
M2"Y0D"25-(6T]QS8^X'D`@1435"-O?M![QL>O\&B`@T`P!1&!^M;(KW[0>\;Q
M'K_!H@(/`,#TYG8&ZULB.3:R$@/"`$#0F'0D1=#9`AXVXO,;R+[1NQ\^OX'L,
M&T@N4)`DE32%M/<<V/N!Y`($C51-4$@N0-"(A67C+2I<H\*%'"PJL```24=22
MOB628R,K,6`)``1435"-!)TMX&$CG#32V0(>-D([',$TTN8"`65M+A#@UN8"K
M`6%M+A`@UN8"`FLP;2X@P`;3Y@(";C!M+B!0!M/F`@)F,!XVTN8"`6%M+A`@`
MUN8"`F8P2"Y`$"3D5-3F`@%E;2X@4`:3T!K!--+F`@)A,6TN("`6T^8"`FXQ5
M;2X@4";3Y@(">3$>-M+F`@%N;2X@X`;3Y@(";C%M+B"P!M/F`@)A,6TN("`6K
M@^0"`U!(2<$TTN8"`6MM+B"P-M/F`@)K-!XVTN8"`F$Q;2X@4";3Y@(!:T@N\
M0&`EA233Y@(!:P6UT>8"`6M>M1%,(VTN$Y@(!<FTN((`FT^8"`6-M+A!`P
MYV$C;2X0L-;F`@%TWJ+2Y@(!<FTN$GWAKNK5'P&FTN()`78T(;[JV!JP)M/
M+A!`-Y,"`0``````0`)M+A`@Y]X:;2X08#<O*BVPX=X:!:_1,2KSHM+F`@%T%
M)K3AWAIGJ]'F`@)H,F>K$3<J;2X00&="&^ZMT>8"`F@R[JV1T!KNK;$2`^2E1
MT>8"`GDQ"*/2`AONK8&K`FTN$$`WDP("```````@!VTN$"#GWAIM+A!@US$JF
M+;#AWAH%KS&3`@$``````!`&,RD0````````D-#F`@%T)K3AWAIGJS&3`@$``
M`````%`$;2X00(<P*BVPX=X:9ZOAWAHK,4!>&FTN()`7(S,J+;#AWAH)K9'0]
M&@FMT>8"`6-M+A!@Y]X:>++1Y@(">3'NK8&K`LFBTN8"`6,RH^+>&FTN$&`WN
M+RHML.'>&@6OT>8"`79M+A`@5_`:WJ+2Y@(!=":TX=X:9ZOAWAHK,4!>&FTNN
M()`7,R\J+;#AWAJX*I`L*FTN$#`VDP("```````@`>ZMT>8"`78=H]("&^ZM3
M4?`:':,RDP(!``````"``FTN$$!G0AONK7&V&C,I$````````"30Y@(!=`BC:
MT@(;[JUQMAKNK;$2`^2ET>8"`GDQ':/2`AONK8&K`LFBTN8"`6,S*3``````X
M`$!0X-X:;2X08'<T*BVPX=X:!:\QDP(!```````0!C,I(```````(&;0Y@(!Z
M=":TX=X:9ZLQDP(#```````R`6TN$$"',"HML.'>&F>K,9,"`@``````(`=MZ
M+A!`)S,J+;#AWAIGJ^'>&BLQ0%X:;2X@D!=S-"HML.'>&@FMD=`:":W1Y@("B
M;#!GJ^%?(_XUXE\C_C628R,K,8#D`@A04D5315)613DVLA(#/`=`T$C5!$70L
MV0(>-L))(YTMX&$CM,,13"-M+A#`UN8"`6MM+A`0UN8"`6)M+B"P!M/F`@)L;
M,&TN(.`&T^8"`F4P;2X@8`;C82-M+A#`UN8"`FPP":W1Y@(!:VTN(+`&D]`:#
M;2X0L-;F`@)K,&>K$4PC;2X0`-?F`@)K,VTN(+!&XV$C;2X0$-;F`@%B;2X@*
M8`:#Y`($04).1<$TTN8"`F$Q;2X@(!;3Y@(";C%M+B!0)N-A(VTN(.`6T^8"[
M`FLS;2X@L$;3Y@("8C%(+C`0]-34Y@("83%M+B!0)M/F`@%K2"Y`8"6%)-/F(
M`@%L;2X@P`:3T!IM+A"PQDH;;2X0L%90&VTN$+#F51O!--+F`@%M;2X08-?FK
M`@%R;2X@@";3Y@(!<&TN$##7Y@(!8VTN$$#G82-M+A#0UN8"`FXP9ZO1Y@(!:
M<VTN$##6Y@(!=MZB4O`:[JWAWAIM+A``9T(;[JV!JP)M+A!@-Y,"`0``````=
M0`(%K]'F`@%S[JW1Y@(!8_.BT@(;[JW1,2IM+A!`YRTJ+;"1T!IQH]+F`@)H=
M,NZM<;8:[JVQ$@/DI='F`@%P"*/2`AONK8&K`FTN$&`WDP("```````@!P6O1
MT>8"`7/NK='F`@%C':/2`AONK3&3`@$``````!`&,RD0````````6-#F`@%T6
M)K3AWAH)K='F`@%T"*/2`AMGJ^'>&BLQ0%X:;2X0`"<S*BVPX=X:9ZMQMAIGH
MJ]'F`@%C;2X08.?>&FTN$`#GWAJX*M#F`@%V,J-2\!IM+A`P-B\J+;#AWAIMV
M+A!@U^8"`7(%K]'F`@%T)K21T!KNK;$2`^2ET>8"`7#SHM("&^ZM@:L";2X0"
M8#>3`@(``````"`!!:_1Y@(!8QVCT@(;[JW1,2HS*1`````````8T.8"`70F?
MM.'>&@FMT>8"`70(H]("&V>K,9,"`0``````0`%M+B"`)N/>&F>K,9,"`0``X
M````@`5M+A!`9T(;[JW1Y@(":#+NK9'0&NZML1(#Y*71Y@(!<!VCT@(;[JUQH
MMAIGJ]'F`@)E,&>KT;L?_C7B7R/^->)?(SDVLA(#2"Z``"55-%4D95648R,K#
M,4!F``1.1U*-!)TMX&$C2"Y`@(5ETXCD`@1!25)9>\^!O1](+D!`U035V+L?W
M]+[A\1LL*M```$QA=+"^)=*['_2^X?$;+"KP``!,;VYGL+XEDF,C*S%0"@`$@
MC4Y'4@2=+>!A(SZ_@>P;O?OA\QO(OH'D`@1!25)9>\^!O1](+D#02-4$A>0")
5!(U86#8L*K```$Y'4KXEDF,C*S$`"
``
end
END_UU